scom-org colab

#install.packages(c('tidyverse','lme4'))
if (T) {
# load packages
library("tidyverse")
#library("quarto")
library("lme4")
# clear workspace
rm(list=ls())
}
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.0     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.0
✔ ggplot2   3.4.1     ✔ tibble    3.1.8
✔ lubridate 1.9.2     ✔ tidyr     1.3.0
✔ purrr     1.0.1     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Loading required package: Matrix


Attaching package: 'Matrix'


The following objects are masked from 'package:tidyr':

    expand, pack, unpack
# working directory
if (!grepl("/qmd", getwd(), fixed=T)) {setwd("qmd/")}; getwd();
[1] "/home/sol-nhl/rnd/r/projects/scom-org/qmd"
# load functions
vals_normalize <- function(x,y) {return (data.frame(id=x, nv=(y - min(y)) / (max(y) - min(y))))}
# load fb post dataset
fn = "https://raw.githubusercontent.com/nils-holmberg/scom-org/main/csv/fb-sa-230314.csv"
fn = "../csv/fb-sa-230314.csv"
dtp = read.table(fn, sep='\t', header=T, strip.white=TRUE, stringsAsFactors=FALSE)
dtp = dtp |> as_tibble() |> mutate(month=month-30)

#
dtp |> names()
 [1] "id"         "text"       "org"        "time"       "lang"      
 [6] "follow"     "e_lc"       "e_cc"       "e_sc"       "e_rc"      
[11] "e_index"    "emoji"      "emnum"      "sa_val"     "sa_pos"    
[16] "sa_neg"     "sa_frq"     "group"      "date"       "bins"      
[21] "index"      "month"      "sa_int_abs" "sa_int"     "wc"        
[26] "out"        "org_type"  

240119: table descriptives

tmp = dtp |> 
  select(c(19,22,3,27,14,23,25,11,6)) |>
  mutate(date=as.Date(date)) |>
  mutate(date=format(date, "%Y-%m")) |>
  mutate(
    m1_sa_val=sa_val,
    m2_sa_int_abs=sa_int_abs,
    m3_wc=wc,
    m4_sa_int_rel=sa_int_abs / wc,
    m5_e_index=e_index,
    m6_follow=follow,
    m7_date=date
  )
#write.table(tmp, "/tmp/scom/fb-sa-240119.tsv", sep="\t", quot=T, row.names=F)
  • select columns
  • sample 1000 rows
  • summarize chatgpt
  • min(time), max(time)
  • plot gantt diagram
  • mean(measures)
  • sd(measures)
  • by org, org_type

aggregate measures by org

# Aggregate the data
aggregated_data <- tmp %>%
  select(starts_with("m1_"), starts_with("m2_"), starts_with("m3_"),
         starts_with("m4_"), starts_with("m5_"), starts_with("m6_"),
         starts_with("m7_"), org) %>%
  group_by(org) %>%
  summarize(across(starts_with("m1_"):starts_with("m6_"),
                   list(mean = ~ mean(., na.rm = TRUE),
                        sd = ~ sd(., na.rm = TRUE))),
            m7_first = first(m7_date),
            m7_last = last(m7_date))

# View the aggregated data
result_df = aggregated_data |> as_tibble()
cat(simplermarkdown::md_table(result_df))
org m1_sa_val_mean m1_sa_val_sd m2_sa_int_abs_mean m2_sa_int_abs_sd m3_wc_mean m3_wc_sd m4_sa_int_rel_mean m4_sa_int_rel_sd m5_e_index_mean m5_e_index_sd m6_follow_mean m6_follow_sd m7_first m7_last
AMREFNordic 1.98657718 4.529165 4.818792 5.474824 52.38255 43.15694 0.09991600 0.20211051 35.11409 148.344674 1057.9329 67.85723 2016-02 2020-10
ActionAidSweden 0.74117647 5.549409 7.700000 6.833901 74.91029 48.63348 0.10211565 0.10239044 61.69412 215.264233 13759.1471 1420.06370 2015-11 2020-10
Afghanistankommitten 1.96440489 4.551470 4.820912 5.051425 49.81090 35.02964 0.10132240 0.15742427 126.69744 249.499329 14307.7286 4328.88580 2015-11 2020-10
Afrikagrupperna 1.10839161 4.368805 4.541958 5.423470 63.38811 54.47465 0.06589123 0.06224883 60.31119 107.691491 10479.9301 779.78744 2018-10 2020-10
Alzheimerfonden 1.75196850 4.455921 5.082677 4.862238 51.25591 33.33851 0.10099255 0.08452541 236.77559 187.560627 8829.9213 341.91440 2017-11 2020-10
AmnestySverige -1.63542739 5.158212 6.317199 5.535295 56.03090 41.98683 0.11555812 0.08959921 618.28012 864.433613 93597.2049 5602.06850 2015-11 2020-10
AnhorigasRiksforbund 1.45377258 4.411932 3.572795 9.117336 45.79171 100.45138 0.07489957 0.15698286 50.93199 67.994162 1731.2338 749.10248 2016-02 2020-10
BRIS 1.98502674 4.361820 4.896257 4.982081 58.14973 39.92223 0.07803907 0.08388972 246.89198 623.556126 86262.0075 5668.68984 2015-11 2020-10
Barnfonden 3.29914530 4.630835 5.746032 4.573119 58.51770 31.59881 0.10538129 0.09007651 122.27839 545.049865 27980.2991 588.51996 2015-11 2020-10
BirdLifeSverige 2.51184346 4.849552 3.467559 5.686276 42.41607 62.56302 0.08623228 0.14175573 159.02163 236.711845 13579.8620 2208.42402 2015-11 2020-10
Blomsterfonden 1.45754717 2.724836 1.910377 3.096625 16.44811 14.47116 0.11053328 0.21173754 33.75943 36.942041 1346.5236 46.21149 2017-11 2020-10
ClownerutanGranser 6.22085890 6.358883 11.716039 7.916893 96.66871 57.23720 0.13201667 0.08706294 151.87730 171.956025 13600.5092 2235.24978 2015-11 2020-10
Diabetesfonden 2.66153846 3.878131 3.646154 4.299094 35.81538 28.00664 0.08307258 0.08073476 154.41538 353.218899 6380.9692 80.08218 2018-10 2020-10
EcpatSverige 1.24109015 4.891099 6.641509 5.139585 72.98742 37.54459 0.09211587 0.07521224 410.32075 510.957661 30949.9434 4173.20668 2015-11 2020-10
Erikshjalpen 2.21105072 3.979301 4.613225 5.565064 55.90308 40.19337 0.07448751 0.07186158 59.92391 83.858273 11736.1603 1525.85654 2015-11 2020-10
FNforbundet 1.45697329 3.606496 3.658754 3.855467 39.95153 32.28942 0.08639258 0.08284888 73.66766 198.558514 13871.8853 2362.45010 2015-11 2020-10
FairtradeSverige 2.81760204 3.730533 4.414541 3.801975 62.72449 36.19414 0.07692614 0.07223328 200.60714 360.358005 111179.0587 1258.10613 2015-11 2020-10
FreezonenKvinnoTjejochBrottsofferjour -0.54583333 6.066402 5.995833 8.613261 59.45000 73.28369 0.08884198 0.10993876 15.76250 32.112737 724.8083 143.91166 2019-02 2020-10
Friluftsframjandet 5.91886410 5.147174 7.452333 5.513865 60.36511 39.25625 0.13903490 0.10284313 173.18458 454.247990 33490.0142 6286.52096 2018-05 2020-10
GbgStadsmission 4.16451149 6.024234 6.171695 7.604624 69.03161 68.87829 0.08982145 0.09545385 111.34698 274.448215 9628.6149 1534.02388 2015-11 2020-10
HRFriks 2.06995582 4.232063 4.909426 4.648584 58.50810 33.16577 0.08253229 0.07706519 67.40795 65.380627 3316.6642 726.28098 2015-11 2020-10
HRWSweden -1.42503439 4.645514 5.881706 5.692030 56.65337 42.59898 0.11116072 0.10311194 5.52132 8.359305 1148.7153 526.29005 2017-09 2020-10
Hjartebarnsfonden 4.75474255 6.219701 9.134146 8.001842 98.22358 70.58165 0.09587636 0.07960570 165.55962 215.632753 7657.9119 443.22598 2018-10 2020-10
IslamicReliefSverige 2.88640840 5.540874 7.523309 6.815087 70.61129 59.84115 0.11256628 0.08983337 71.57058 186.052267 14959.8181 2750.99736 2015-11 2020-10
Lakarmissionen 3.52380952 5.087760 7.142857 8.167881 65.30736 73.19246 0.11334375 0.10656306 301.31169 831.363598 26709.8052 230.51976 2017-11 2020-10
Latinamerikagrupperna 0.45562130 4.352009 4.254438 6.234533 46.61538 48.25157 0.11617375 0.21796089 25.36095 25.940521 6663.1361 20.00444 2020-01 2020-10
Laxhjalpen 4.57183908 4.976840 5.623563 5.607212 52.03448 39.66310 0.13232989 0.19188281 20.24856 16.895191 2153.8405 346.66695 2015-11 2020-10
MPSweden 2.49685535 5.013746 6.081761 5.263883 85.33333 50.02527 0.07911091 0.06478618 2000.22013 3142.275533 630712.9371 35602.01724 2015-11 2020-10
Mattecentrum 3.51657941 3.907242 4.045375 4.044041 28.45986 27.18002 0.20837502 0.57221327 59.45288 89.755719 25031.7033 2281.47222 2016-01 2020-10
Njurfonden 2.67701863 5.607587 4.701863 5.659996 50.26708 38.55901 0.07343755 0.07906510 131.02484 270.474397 1055.8075 273.74170 2017-11 2020-10
Nordensark 3.15860735 4.211693 4.837524 4.732445 64.71373 47.76752 0.08228628 0.08914184 239.68085 273.435062 19762.6692 828.67588 2019-05 2020-10
PMUfb 2.30000000 4.389165 5.502532 5.730701 54.14684 47.08514 0.11275814 0.14077204 105.31772 192.080350 5628.1076 1228.15642 2015-11 2020-10
PlanSverige 1.04647160 5.623524 7.509466 6.827794 78.65491 57.07897 0.10060339 0.08313444 653.44148 1120.796084 57794.6136 8784.30106 2015-11 2020-10
Psoriasisforbundet 2.58348624 3.805581 3.977982 4.479474 57.89541 36.05330 0.06908573 0.08226927 58.15413 48.845891 5470.0972 299.81309 2017-11 2020-10
RaoulWallenbergAcademy 2.85009488 5.267585 5.981025 6.235525 75.65655 62.13528 0.07483660 0.06711849 98.38710 188.978488 7810.8027 843.09015 2018-08 2020-10
Reumatikerforbundet 1.34036939 3.763389 3.656992 4.449465 38.40633 33.97568 0.08073637 0.10330273 99.83465 96.404869 10907.2260 633.66903 2017-11 2020-10
RiksforbundetHjartLung 2.57180851 4.242346 4.728723 4.934546 61.44947 46.42804 0.07982456 0.08555846 113.08910 142.409562 6618.4362 4822.72468 2015-11 2020-10
SLMK.1981 1.02400835 3.485520 4.255741 4.159357 56.31106 37.49351 0.07506007 0.06762310 44.63361 55.199992 1819.9843 252.87087 2015-11 2020-10
Sportfiskarna 2.51242236 4.153902 3.940994 4.284907 44.07298 34.44471 0.10443204 0.13385953 151.07764 403.589285 14315.1724 3182.79437 2016-01 2020-10
StiftelsenFriends 0.51911221 5.073589 6.889026 9.907723 59.39088 78.49812 0.12106890 0.14105022 712.42910 4860.725551 72514.4168 7689.76317 2015-11 2020-10
TeachForSweden 3.83546326 4.805006 4.822684 5.259250 64.57987 49.65543 0.07461921 0.08291682 21.98722 18.075216 3180.6262 896.52890 2016-02 2020-10
Teskedsorden 1.40559441 6.380054 8.097902 6.847527 95.84965 62.53079 0.08598969 0.06990109 53.90909 57.993092 5120.2552 293.80251 2019-01 2020-10
Tjejzonen 4.54389313 6.842393 9.799618 8.213681 89.66412 59.05290 0.12228492 0.16231479 66.71947 114.499190 5156.9828 984.37492 2016-01 2020-10
UNICEF-Sverige 1.69633508 5.177756 6.203141 4.791742 51.69319 25.20222 0.12654664 0.10933415 1111.96859 3250.357429 306713.8963 12509.40429 2015-11 2020-10
WikimediaSverige 2.93508772 4.577894 3.970175 5.156001 55.56667 49.59339 0.07170849 0.09305698 34.01404 108.908677 2824.3421 1803.24839 2015-11 2020-10
WorldAnimalProtectionSverige 0.96117274 4.510372 5.523772 4.766456 49.13946 29.00542 0.11939871 0.10489676 1018.28051 1334.483399 85681.2448 10013.07218 2015-11 2020-10
actsvenskakyrkan 1.77307692 3.935775 4.863462 4.338494 44.84327 30.02276 0.11417106 0.10073909 245.88654 428.189166 19163.4048 5192.57421 2015-11 2020-10
astmaallergiforbundet 1.46388606 3.433759 3.138352 3.703247 40.04578 29.25603 0.07971094 0.09239395 93.15158 112.295546 11449.0610 3129.46554 2015-11 2020-10
autismaspergersverige 1.63447433 3.690556 3.996333 3.974981 65.41687 34.52161 0.06477703 0.08565146 276.36308 284.710928 23747.9804 3208.57887 2017-03 2020-10
barncancerfonden 2.71072664 4.460281 6.033910 4.694499 66.16817 32.42958 0.09312299 0.07305899 607.29343 636.998838 111042.3744 19777.15616 2015-11 2020-10
barndiabetesfonden 7.44754316 8.121434 8.974768 8.838874 68.23904 55.37763 0.12133282 0.11737756 254.80876 506.392375 12882.9442 3926.03635 2015-11 2020-10
barnrattsbyransverige 3.29430380 5.604315 7.161392 7.637162 77.40506 68.82345 0.10234088 0.08659004 77.61709 61.059967 2815.8291 532.32249 2015-11 2020-10
berattarministeriet 3.26931818 4.654768 4.480682 5.470333 48.66818 42.93103 0.09299559 0.09880561 47.85341 55.127220 5640.2875 1164.35966 2015-11 2020-10
brostcancerforbundet 2.49945115 4.628359 5.711306 8.284042 51.71570 69.85218 0.14058239 0.21443005 180.70033 253.225633 4875.5071 1654.56312 2016-02 2020-10
cancerfonden 1.98955614 3.790906 4.680592 4.127938 40.42037 23.77020 0.12459840 0.12057903 1427.48999 3254.472204 152398.9896 11865.91478 2015-11 2020-10
celiakiforbundet 0.68571429 2.913966 2.451429 3.777734 44.77714 48.77369 0.05155114 0.08293153 105.47429 142.545577 11783.3371 1591.61788 2015-11 2020-10
childhoodsverige 1.11904762 6.800227 10.658730 7.192498 106.86243 60.79262 0.10863908 0.06822859 454.92063 642.395504 22032.7566 761.26881 2017-11 2020-10
civilrightsdefenders 1.11095506 7.037596 10.841292 8.359458 62.07163 30.92733 0.17092530 0.10963457 103.80758 484.434248 41217.3076 10022.13623 2015-11 2020-10
diakonia.se 1.53232759 3.739208 4.497845 4.168171 45.28233 32.82824 0.10585067 0.09334381 116.19828 267.921307 21924.2177 826.32177 2017-11 2020-10
djurskyddet 1.74518686 4.394604 4.519819 5.083922 54.80294 33.60673 0.08309916 0.08558714 251.46772 409.120679 27072.2695 1693.26288 2015-11 2020-10
emmausstockholm 1.60123330 4.280216 4.176773 4.616975 54.83556 36.64772 0.06964650 0.06854723 31.27955 65.832138 3223.2590 491.96121 2015-11 2020-10
eskilstunastadsmission 3.60444444 4.317982 4.822222 5.455178 43.38000 48.95892 0.15042883 0.28056749 112.51778 128.933836 5198.7422 241.56161 2017-10 2020-10
fondenforpsykiskhalsa 1.36697248 2.923913 2.761468 3.971890 33.43119 34.65822 0.06957677 0.12226562 32.79817 124.784094 1240.7064 194.05384 2016-03 2020-10
foreningenfuruboda 2.02374894 3.579954 2.693808 4.047937 42.62426 37.82015 0.07125921 0.11242269 46.07294 50.838268 2074.0568 636.75539 2015-11 2020-10
forskautandjurforsok 2.12316716 5.742726 5.348974 6.734781 71.81525 70.04871 0.07961377 0.08026455 299.11730 353.172176 67307.8152 2559.70516 2015-11 2020-10
fralsningsarmen 1.50473538 3.286972 3.459053 3.625266 36.04290 23.34208 0.10131023 0.13053100 477.38774 1003.657941 18428.5604 4771.76598 2015-11 2020-10
friskfri 2.23479888 6.479589 8.363891 8.425563 103.61366 69.63653 0.07621839 0.04736977 54.76333 61.042344 5201.3835 1108.06950 2016-05 2020-10
fryshuset 2.74613003 4.494711 5.247678 6.060304 72.51084 54.33805 0.06684365 0.07111194 27.47678 31.729572 11025.6254 297.14463 2019-01 2020-10
hallsverigerent 1.30293160 3.188902 2.713355 3.198580 31.07166 23.32936 0.10178203 0.19820868 292.14821 730.873403 21252.2638 5629.00953 2015-11 2020-10
hela.manniskan 0.98884758 2.785949 1.327138 3.104158 18.01115 28.12614 0.08228724 0.22682523 67.45911 222.335058 1581.1914 805.24357 2015-11 2020-10
hjarnfonden 2.37480190 4.811079 5.956418 6.779792 53.25674 50.56382 0.11555436 0.10831971 351.97544 691.081410 22519.3954 8595.53902 2016-01 2020-10
hjartlungfonden 2.15705521 3.932773 4.628221 4.446840 51.43558 36.07987 0.09951328 0.11282523 138.69202 382.526737 37859.5656 1183.12613 2017-10 2020-10
imsweden.org 1.78327526 4.637606 5.490592 5.264326 63.74216 40.53886 0.08360479 0.07316173 89.79512 234.544910 12939.6376 2517.34222 2016-01 2020-10
iogtnto 0.76242424 3.257075 3.128485 3.595166 39.86424 25.65243 0.07922302 0.09013086 161.99636 210.305917 10521.3588 1318.32744 2016-05 2020-10
kalmarstadsmission 2.42067736 3.709746 3.591800 4.551915 47.38324 47.33442 0.07783630 0.10121708 77.10428 78.033507 3307.8699 1103.26830 2015-11 2020-10
kfumsverige 1.85653409 3.192833 2.907670 3.528586 41.22159 35.87780 0.08222851 0.18383536 18.92614 24.269649 2811.7429 193.61861 2015-11 2020-10
kristnafreds 2.22938776 4.754130 5.930612 5.909385 56.71673 43.74597 0.10486765 0.09471265 25.55837 24.497067 2343.0629 227.32068 2015-11 2020-10
kvinnatillkvinna 0.52587800 5.543852 7.176525 6.167061 63.64048 35.45485 0.11030973 0.08113679 273.14233 1686.407708 41220.6238 6492.71767 2015-11 2020-10
lakareivarlden 0.78558875 4.658372 4.694200 8.237538 60.68190 79.54992 0.06883227 0.08841693 58.61863 98.878235 4760.1670 917.83551 2015-11 2020-10
lakareutangranser -0.49685535 3.711465 4.004717 4.013546 44.99292 30.28861 0.09158643 0.08405740 779.17846 2533.477871 386301.4434 7224.79893 2015-11 2020-10
lillabarnet 4.11111111 5.209071 4.888889 6.235597 45.43056 55.98435 0.11015768 0.10763638 109.59028 459.368515 2510.2014 202.15758 2015-12 2020-10
linkopingsstadsmission.fb 2.70780856 4.771953 4.658690 5.736770 58.31234 48.63979 0.07622621 0.08996867 50.84383 94.837769 4936.9099 990.48035 2015-11 2020-10
mentorsverige 2.83767228 5.308691 5.202144 7.029443 58.80092 52.02468 0.08576576 0.08306014 48.85605 70.850275 8747.4119 1096.65463 2015-11 2020-10
mindsweden 0.85365854 3.880897 4.567338 4.552533 52.94380 30.93470 0.08469462 0.07272152 232.52492 419.256846 22751.7943 6398.59915 2016-04 2020-10
minstoradag 4.61778846 6.111721 8.992788 7.680907 92.43750 59.79494 0.09927492 0.07977025 1079.75000 2291.102684 86494.5385 9610.87585 2015-12 2020-10
neurosweden 1.54633205 4.223996 4.990347 5.759015 64.84942 55.78829 0.07764060 0.09906922 72.72587 104.134594 15792.7355 308.44860 2018-10 2020-10
nhjalp 1.78260870 3.892177 4.043478 5.635030 47.62609 53.73418 0.07860611 0.07882988 30.28261 70.753543 2333.6087 814.02069 2017-11 2020-10
nonsmokinggeneration 1.49200376 4.006784 4.135466 4.151610 47.88805 32.32075 0.09239962 0.09055191 40.29821 47.730099 5119.7178 290.51878 2015-11 2020-10
operationsmilesverige 4.14052953 5.175474 6.384929 6.569203 70.47454 61.75309 0.11670424 0.14208159 589.69450 805.250381 24605.9888 4568.42982 2015-11 2020-10
organisationen.man -0.48347613 5.898864 7.658507 8.646497 78.61077 65.98171 0.09111132 0.07958766 149.78213 240.026615 16909.8764 3856.91687 2016-01 2020-10
oxfamsverige 0.07164179 4.849077 6.731343 5.328049 66.94776 38.60523 0.10119904 0.07116472 196.85373 586.009514 13310.0090 2986.41675 2015-11 2020-10
palestinagrupperna 0.61203320 6.288036 5.529046 9.825514 66.95643 96.53871 0.08598682 0.19240083 88.77593 128.497796 7636.9440 543.68663 2015-11 2020-10
parasportSWE 1.54931507 2.428886 1.927397 2.558815 22.22329 16.48954 0.08339481 0.11549583 75.73151 65.827740 4736.6836 613.19622 2016-08 2020-10
prostatacancerforbundetsverige 2.07058824 3.277278 2.870588 3.291690 29.45294 19.46840 0.10474620 0.11974541 197.89412 176.354070 24279.6647 1593.16322 2018-11 2020-10
raddabarnen 0.59744780 5.284399 7.917633 5.884797 75.51392 40.91581 0.10495589 0.06768376 963.22274 2741.992923 156626.8306 17387.09672 2015-11 2020-10
raddningsmissionen 6.52223060 8.722775 11.195931 11.510604 111.76790 85.83747 0.09817405 0.06793927 97.81161 137.024161 12551.5162 1740.08906 2015-11 2020-10
rburiks 1.02370100 2.795556 2.309025 3.548702 33.78487 38.43049 0.06214061 0.08793026 107.00820 136.341647 3544.6600 932.37437 2016-01 2020-10
reachforchangeorg 6.07766990 6.900704 8.550971 8.223035 71.65291 52.04425 0.12640385 0.10659239 16.93932 19.668855 10451.7597 457.85851 2015-11 2020-10
rfsl.forbundet 1.83559457 4.995696 5.181165 6.599925 61.46369 55.34704 0.08665757 0.19962109 141.51317 300.170084 16334.2123 3378.31296 2015-11 2020-10
rfsu.se 1.69082126 5.430000 5.671498 6.449429 62.76006 57.47363 0.09538553 0.16037733 158.40258 950.377736 15730.4815 1576.04155 2017-12 2020-10
rightlivelihood 2.37291280 6.742481 9.575139 10.244566 64.93878 46.69208 0.14286962 0.10582397 43.57885 203.035457 13498.3840 1270.22524 2017-01 2020-10
rodakorset 0.52408931 3.807154 4.723854 3.916797 41.69800 23.39134 0.11540110 0.08772189 837.22092 1176.032144 154582.9330 16987.94544 2015-11 2020-10
savetheorangutan.sverige 4.91024555 5.521797 7.794242 6.155816 69.56139 36.24767 0.12097016 0.10233582 248.33785 274.263810 9449.8340 1203.01790 2015-11 2020-10
scouterna 4.03995560 4.455529 5.491676 4.471538 54.45172 31.63390 0.11357833 0.12777406 105.39734 233.443302 19195.2342 619.53388 2018-10 2020-10
sjoraddning 2.82205029 4.249396 5.263056 4.983462 62.12959 40.72982 0.08518263 0.08823815 471.63153 460.309716 66985.2050 5353.00175 2015-11 2020-10
skanestadsmission 2.77805907 4.332528 4.803376 5.016963 52.64051 47.95403 0.09673725 0.10717720 155.84388 168.283791 8341.2633 2364.78667 2015-11 2020-10
sosbarnbyar 3.06171548 5.343035 7.082636 5.936882 65.26569 42.73543 0.12368877 0.14766421 168.25732 314.139661 44470.2531 2237.20041 2015-11 2020-10
spadbarnsfonden 3.60000000 5.935990 7.831579 8.076555 72.41579 76.80685 0.10151621 0.08476173 96.58421 180.038240 7288.8211 163.55828 2020-01 2020-10
stadsmissionen 2.70429570 3.884903 4.040959 4.041203 45.03596 31.18161 0.09538449 0.10930400 227.83217 633.775181 24082.0749 5844.92506 2015-11 2020-10
stadsmissioniorebro 3.05872757 4.019537 3.672104 4.252852 36.24959 29.89116 0.10046460 0.11485921 65.71289 87.640303 3756.4127 461.88895 2016-01 2020-10
starforlifeofficial 4.85521886 6.534931 5.791246 7.635501 55.02694 53.62734 0.08817729 0.09642813 63.86869 63.154623 8765.2862 298.99172 2016-03 2020-10
suicidezero 0.93155894 6.177022 8.361217 8.653350 82.98099 67.19349 0.10009304 0.08898536 450.58175 549.820984 64008.1255 2312.05900 2019-02 2020-10
svenskafreds 1.26274510 5.560780 6.953725 7.606918 81.31451 62.53191 0.08184393 0.07125861 103.27529 165.300047 12021.3388 1364.47313 2015-11 2020-10
svenskalivraddningssallskapet 1.88931298 3.505140 2.927481 3.654601 38.81870 29.22425 0.08322500 0.15456969 85.96374 133.596152 32147.3053 304.69871 2015-11 2020-10
sverigeforunhcr 1.70671378 4.488184 5.528269 5.263700 51.38781 38.86544 0.11347227 0.09487778 384.04770 666.155247 65812.0839 11779.81456 2015-11 2020-10
sverigesstadsmissioner 1.01426307 4.004535 4.326466 4.601026 49.94453 37.25598 0.08469020 0.08479443 28.66878 27.206377 1620.1569 144.76425 2017-08 2020-10
thehungerprojectse 1.75510204 4.091800 4.710204 4.679700 50.86224 31.00381 0.09095990 0.08593772 20.20918 23.158646 4421.6551 1508.66905 2016-02 2020-10
ungcancer 2.20069505 6.536229 10.657689 8.523682 99.72719 66.47295 0.12140692 0.36030345 437.13467 940.105918 151239.6533 1160.85746 2015-11 2020-10
uppsalastadsmission 4.30509745 4.314774 5.715892 4.763997 61.70915 33.87443 0.09624216 0.07713668 82.82384 144.694566 3948.2106 1258.89102 2015-11 2020-10
vasterasstadsmission 3.25196850 5.257573 4.569554 6.210797 53.85433 59.55482 0.08233304 0.11936839 68.15617 230.660739 5568.7966 636.76250 2015-11 2020-10
viskogen 3.50000000 4.613743 5.703390 4.879541 66.30085 40.32114 0.08997433 0.08202574 806.32839 943.540559 53655.0106 9048.02054 2016-02 2020-10
warchildsverige 3.55962060 5.314259 7.670732 5.923642 58.73984 35.99985 0.15023352 0.14425350 29.37534 36.957217 3307.2846 1458.45862 2017-01 2020-10
wateraidswe 2.07035176 4.663428 5.819095 5.933352 64.95678 52.85492 0.09632118 0.09232208 78.00402 198.772065 7213.3397 2984.03191 2015-11 2020-10
weeffect 2.20571429 4.279764 5.158095 5.529221 58.09143 52.59640 0.08879443 0.07689710 240.18857 700.033519 64381.9886 6554.56075 2016-04 2020-10
worldschildrensprize 2.64444444 6.098896 8.000000 7.707959 68.17037 47.13534 0.12382472 0.10876342 792.30741 2102.117358 143251.1630 2073.82337 2017-06 2020-10
# Convert 'm7_first' and 'm7_last' to Date type
pd <- result_df %>%
  mutate(m7_first = as.Date(paste0(m7_first,"-01")),
         m7_last = as.Date(paste0(m7_last,"-01")))

# Reorder 'org' alphabetically and reverse the levels to put the first alphabetically at the top
pd$org <- factor(pd$org, levels = rev(sort(unique(pd$org))))

# Create a Gantt chart
ggplot(pd, aes(y = org, x = m7_first, xend = m7_last, yend = org)) +
  geom_segment(size = 6, color = "blue") +
  theme_minimal() +
  labs(title = "Gantt Chart of Organizations and Date Ranges", 
       x = "Date", y = "Organization") +
  theme(axis.text.y = element_text(size = rel(1.5)))  # Increased font size for y-axis labels
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.

aggregate measures by org_type

# Aggregate the data
aggregated_data <- tmp %>%
  select(starts_with("m1_"), starts_with("m2_"), starts_with("m3_"),
         starts_with("m4_"), starts_with("m5_"), starts_with("m6_"),
         starts_with("m7_"), org_type) %>%
  group_by(org_type) %>%
  summarize(across(starts_with("m1_"):starts_with("m6_"),
                   list(mean = ~ mean(., na.rm = TRUE),
                        sd = ~ sd(., na.rm = TRUE))),
            m7_first = first(m7_date),
            m7_last = last(m7_date))

# View the aggregated data
result_df = aggregated_data |> as_tibble()
cat(simplermarkdown::md_table(result_df))
org_type m1_sa_val_mean m1_sa_val_sd m2_sa_int_abs_mean m2_sa_int_abs_sd m3_wc_mean m3_wc_sd m4_sa_int_rel_mean m4_sa_int_rel_sd m5_e_index_mean m5_e_index_sd m6_follow_mean m6_follow_sd m7_first m7_last
1 3.057028 4.200284 4.209101 4.490529 43.90755 34.39770 0.10279366 0.13813162 99.72494 278.0129 13957.86 10586.60 2015-11 2020-10
2 3.149388 4.646597 4.507676 5.347176 49.40038 45.09651 0.11354563 0.28007334 78.82198 489.3205 14093.29 29878.23 2015-11 2020-10
3 2.141953 5.016731 5.421183 6.198936 58.45656 51.56874 0.09634295 0.11085358 341.21398 1191.6792 56859.58 99903.65 2015-11 2020-10
4 2.735802 5.520697 6.159303 7.133257 65.51294 58.48337 0.09477381 0.13830018 262.78918 1303.0001 39396.08 69324.41 2015-11 2020-10
5 2.531806 4.904112 5.162154 5.479769 54.80868 44.49427 0.10019346 0.11842419 439.14325 804.8198 36520.46 29556.96 2015-11 2020-10
6 3.791966 5.656389 6.117647 6.759687 66.88881 50.70691 0.09322482 0.08810466 91.45875 223.4714 37878.40 45875.47 2015-11 2020-10
7 1.300783 4.782517 5.151828 6.407339 56.15904 51.50539 0.08997515 0.11165394 115.98863 307.6831 14570.76 22106.36 2015-11 2020-10
9 2.088196 4.971329 6.050024 5.928458 59.13269 44.89400 0.10593526 0.10541065 257.18140 963.9193 39475.60 63837.05 2015-11 2020-10

240118: boxplot measures

tmp <- dtp |> 
  select(c(19,22,27,14,23,25,11,6)) |>
  mutate(
    m1_sa_val=sa_val,
    m2_sa_int_abs=sa_int_abs,
    m3_wc=wc,
    m4_sa_int_rel=sa_int_abs / wc,
  ) |> 
  filter(
    e_index < 10000,
    m1_sa_val < 100,
    m2_sa_int_abs < 50,
    m3_wc < 500,
    m4_sa_int_rel < 5
  ) |>
  sample_n(size = 10000)

tmp |> as_tibble()
# A tibble: 10,000 × 12
   date  month org_t…¹ sa_val sa_in…²    wc e_index follow m1_sa…³ m2_sa…⁴ m3_wc
   <chr> <dbl>   <int>  <int>   <int> <int>   <int>  <int>   <int>   <int> <int>
 1 2015…     2       3      2       2    51      26   1138       2       2    51
 2 2017…    16       9     -7      11    94      41   3282      -7      11    94
 3 2020…    56       4      3       7    50     735  12410       3       7    50
 4 2018…    32       4    -10      20   187     162  88402     -10      20   187
 5 2020…    52       5      0       4    22      76  94053       0       4    22
 6 2019…    44       3     -1       3    57     302 124163      -1       3    57
 7 2017…    24       7      0       0    13     140   3263       0       0    13
 8 2020…    59       9     23      23   155      70  77600      23      23   155
 9 2017…    26       3      0       0     1      43    591       0       0     1
10 2018…    36       4      6       8    96      12  10527       6       8    96
# … with 9,990 more rows, 1 more variable: m4_sa_int_rel <dbl>, and abbreviated
#   variable names ¹​org_type, ²​sa_int_abs, ³​m1_sa_val, ⁴​m2_sa_int_abs
library(mgcv)
Loading required package: nlme

Attaching package: 'nlme'
The following object is masked from 'package:lme4':

    lmList
The following object is masked from 'package:dplyr':

    collapse
This is mgcv 1.9-0. For overview type 'help("mgcv-package")'.
# Create the plot
tmp |> pivot_longer(cols=c(9:12), names_to="measure", values_to="score") |>
  ggplot(aes(x=score, y=e_index)) +
  geom_point(size=0.5) + 
  geom_smooth(method="lm", se=FALSE, linewidth=1.0, color="blue") +
  # quadratic fit
  geom_smooth(method = "lm", formula = y ~ poly(x, 2), se = FALSE) + 
  # cubic fit
  geom_smooth(method = "lm", formula = y ~ poly(x, 3), se = FALSE) + 
  geom_smooth(method = "lm", formula = y ~ splines::bs(x, degree = 3), se = FALSE) + 
  geom_smooth(method="loess", se=FALSE, linewidth=1.0, color="red") +
  geom_smooth(method = "gam") + 
  facet_wrap(~measure, scales="free", nrow = 2, ncol = 2) +
  labs(
    title="Engagement by Sentiment",
    subtitle="Association Between Engagement and Sentiment",
    caption="",
    x="Sentiment",
    y="Engagement"
  ) +
  theme(
    legend.text = element_text(size = 10, face = "bold")
  )
`geom_smooth()` using formula = 'y ~ x'
`geom_smooth()` using formula = 'y ~ x'
`geom_smooth()` using formula = 'y ~ s(x, bs = "cs")'

240118: boxplot measures

org_type_labs=c(
"culture and recreation",
"education and research",
"health",
"social services ",
"environment",
"development and housing",
"law, advocacy an politics",
#"philantropic intermediaries and voluntarism promotion",
"international"
)
tmp = dtp |> as_tibble() |> 
select(c(19,22,27,14,23,25,11,6)) |>
mutate(sa_int_rel_wc=sa_int_abs/wc) |>
mutate(e_index_rel=e_index/follow) |>
mutate(e_index_rel=e_index) |>
#mutate(date=as.POSIXct(time, origin="1970-01-01", tz="UTC")) |>
mutate(date=as.Date(date)) |>
mutate(date=format(date, "%Y-%m")) |>
group_by(date, org_type) |>
summarize(
    m1_sa_val=mean(sa_val),
    m2_sa_int_abs=mean(sa_int_abs),
    m3_wc=mean(wc),
    m4_sa_int_rel_wc=mean(sa_int_rel_wc),
    #date=first(date),
    m5_e_index=mean(e_index_rel),
    m6_follow=mean(follow)
) 
`summarise()` has grouped output by 'date'. You can override using the
`.groups` argument.
# Custom labeller function with individual variable names
custom_labeller <- function(variable, value) {
  custom_labels <- c(
  m1_sa_val="sentiment valence", 
  m2_sa_int_abs="sentiment intensity",
  m3_wc="word count", 
  m4_sa_int_rel_wc="sentiment relative",
  m5_e_index="engagement index",
  m6_follow="follower count"
  )
  return(custom_labels[value])
}

tmp |> pivot_longer(cols=3:8, names_to="measure", values_to="score") |>
  ggplot(aes(x=measure, y=score, fill=as.factor(org_type))) +
  geom_boxplot() +
  scale_fill_manual(values=as.factor(tmp$org_type), labels=org_type_labs) + 
  facet_wrap(vars(measure), scales="free", labeller=as_labeller(custom_labeller)) +
  labs(
    title="measures descriptives",
    subtitle="sentiment measures and engagement",
    caption="",
    x="measure",
    y="score",
    fill="organization type"
  ) +
  theme(
    text=element_text(size=rel(5.0)),
    plot.title = element_text(size=rel(5.0), face="bold"),
    strip.text = element_text(size=rel(5.0)),
    #axis.text.x=element_text(angle=90, hjust=1),
    axis.text.x=element_blank(),  # Omit x-axis text
    axis.ticks.x=element_blank(), # Omit x-axis ticks
    legend.title = element_text(size=rel(5.0), face="bold"),
    legend.text = element_text(size=rel(5.0)),
  )

240118: measures over time, without org_type

tmp = dtp |> as_tibble() |> 
select(c(19,22,27,14,23,25,11,6)) |>
mutate(sa_int_rel_wc=sa_int_abs/wc) |>
mutate(e_index_rel=e_index/follow) |>
mutate(e_index_rel=e_index) |>
#mutate(date=as.POSIXct(time, origin="1970-01-01", tz="UTC")) |>
mutate(date=as.Date(date)) |>
mutate(date=format(date, "%Y-%m")) |>
#group_by(date, org_type) |>
group_by(date) |>
summarize(
    m1_sa_val=mean(sa_val),
    m2_sa_int_abs=mean(sa_int_abs),
    m3_wc=mean(wc),
    m4_sa_int_rel_wc=mean(sa_int_rel_wc),
    #date=first(date),
    m5_e_index=mean(e_index_rel),
    m6_follow=mean(follow)
) 

#tmp |> as_tibble()

# Custom labeller function with individual variable names
custom_labeller <- function(variable, value) {
  custom_labels <- c(
  m1_sa_val="sentiment valence", 
  m2_sa_int_abs="sentiment intensity",
  m3_wc="word count", 
  m4_sa_int_rel_wc="sentiment relative",
  m5_e_index="engagement index",
  m6_follow="follower count"
  )
  return(custom_labels[value])
}

tmp |> pivot_longer(cols=2:7, names_to="measure", values_to="score") |>
  ggplot(aes(x=as.Date(paste0(date,"-01")), y=score)) + #, group=org_type, color=as.factor(org_type))) +
  geom_point(size=1.5) + 
  geom_smooth(method=lm, formula = y ~ x, se=F, linewidth=1.5, color="blue") +
  #scale_x_date(date_breaks = "1 year", date_labels = "%Y") + 
  #scale_x_discrete(labels=ifelse(seq_along(tmp$date) %% 2 == 1, tmp$date, "")) +
  #scale_x_discrete(labels=ifelse((1:60 - 1) %% 4 == 0, as.character(1:60), "")) +
  #scale_x_discrete(labels=ifelse(seq_along(sort(unique(tmp$date))) %% 4 == 1, sort(unique(tmp$date)), "")) +
  #scale_color_manual(values=as.factor(tmp$org_type), labels=org_type_labs) + 
  facet_wrap(vars(measure), scales="free", labeller=as_labeller(custom_labeller)) +
  labs(
    title="measures by time",
    subtitle="sentiment measures and engagement",
    caption="sentiment is increasing over time, engagment is decreasing",
    x="date of post",
    y="score",
    #color="blue"
  ) +
  theme(
    text=element_text(size=rel(5.0)),
    plot.title=element_text(size=rel(5.0), face="bold"),
    strip.text=element_text(size=rel(5.0)),
    #axis.text.x=element_text(angle=0, hjust=1),
    #legend.position = "top",
    #legend.key.size = unit(1, "cm"),
    #legend.title = element_text(size=rel(5.0), face="bold"),
    #legend.text = element_text(size=rel(5.0)),
  )

240110: back to afinn

  • översätta till årtal + månad (t.ex. 2015-01)
  • valens, intensitet, wc, sent/wc, över tid
tmp = dtp |> as_tibble() |> 
select(c(19,22,27,14,23,25,11,6)) |>
mutate(sa_int_rel_wc=sa_int_abs/wc) |>
mutate(e_index_rel=e_index/follow) |>
mutate(e_index_rel=e_index) |>
#mutate(date=as.POSIXct(time, origin="1970-01-01", tz="UTC")) |>
mutate(date=as.Date(date)) |>
mutate(date=format(date, "%Y-%m")) |>
group_by(date, org_type) |>
summarize(
    m1_sa_val=mean(sa_val),
    m2_sa_int_abs=mean(sa_int_abs),
    m3_wc=mean(wc),
    m4_sa_int_rel_wc=mean(sa_int_rel_wc),
    #date=first(date),
    m5_e_index=mean(e_index_rel),
    m6_follow=mean(follow)
) 
`summarise()` has grouped output by 'date'. You can override using the
`.groups` argument.
# Custom labeller function with individual variable names
custom_labeller <- function(variable, value) {
  custom_labels <- c(
  m1_sa_val="sentiment valence", 
  m2_sa_int_abs="sentiment intensity",
  m3_wc="word count", 
  m4_sa_int_rel_wc="sentiment relative",
  m5_e_index="engagement index",
  m6_follow="follower count"
  )
  return(custom_labels[value])
}

tmp |> pivot_longer(cols=3:8, names_to="measure", values_to="score") |>
  #ggplot(aes(x=as.Date(paste0(date,"-01")), y=score, group=org_type, color=as.factor(org_type))) +
  ggplot(aes(x=date, y=score, group=org_type, color=as.factor(org_type))) +
  geom_point(size=1.5) + 
  geom_smooth(method=lm, formula=y~x, se=F, linewidth=1.5) +
  #scale_x_date(date_breaks = "1 year", date_labels = "%Y") + 
  #scale_x_discrete(labels=ifelse(seq_along(tmp$date) %% 2 == 1, tmp$date, "")) +
  #scale_x_discrete(labels=ifelse((1:60 - 1) %% 4 == 0, as.character(1:60), "")) +
  scale_x_discrete(labels=ifelse(seq_along(sort(unique(tmp$date))) %% 4 == 1, sort(unique(tmp$date)), "")) +
  scale_color_manual(values=as.factor(tmp$org_type), labels=org_type_labs) + 
  facet_wrap(vars(measure), scales="free", labeller=as_labeller(custom_labeller)) +
  labs(
    title="measures over time",
    subtitle="sentiment measures and engagement",
    caption="sentiment is increasing over time, engagment is decreasing",
    x="date of post",
    y="score",
    color="organization type"
  ) +
  theme(
    text=element_text(size=rel(5.0)),
    plot.title = element_text(size=rel(5.0), face="bold"),
    strip.text = element_text(size=rel(5.0)),
    axis.text.x=element_text(angle=90, hjust=1),
    #legend.position = "top",
    #legend.key.size = unit(1, "cm"),
    legend.title = element_text(size=rel(5.0), face="bold"),
    legend.text = element_text(size=rel(5.0)),
  )

  • sentiment mått vs engagement index
  • sentiment extremer + exempel poster
tmp = dtp |> 
select(c(19,22,27,14,23,25,11,6)) |>
mutate(sa_int_rel_wc=sa_int_abs/wc) |>
mutate(e_index_rel=e_index/follow) |>
mutate(e_index_rel=e_index) |>
group_by(month) |>
summarize(
    m1_sa_val=mean(sa_val),
    m2_sa_int_abs=mean(sa_int_abs),
    m3_wc=mean(wc),
    m4_sa_int_rel_wc=mean(sa_int_rel_wc),
    #date=first(date)
    m0_e_index=mean(e_index_rel)
)

tmp |> pivot_longer(cols=2:5, names_to="measure", values_to="score") |>
  ggplot(aes(x=score, y=m0_e_index)) +
  geom_point(size=1.5) + 
  geom_smooth(method=lm, linewidth=1.5, se=F) +
  facet_wrap(~measure, scales="free", nrow = 2, ncol = 2) +
  labs(
    title="engagement by sentiment",
    subtitle="association between engagement and sentiment",
    caption="flat or negative trends",
    x="sentiment",
    y="engagement",
    #color="organization type"
  ) +
  theme(
    #legend.position = "top",  # Reposition legend to top
    #legend.key.size = unit(1, "cm"),  # Change size of legend keys
    legend.text = element_text(size = 10, face = "bold")  # Change legend text appearance
  )
`geom_smooth()` using formula = 'y ~ x'

if (T) {
knitr::knit_exit()
#exit()
#q()
#stop("here..")
}